python: declare free-threading support in graph modules#5243
Open
joshlk wants to merge 1 commit into
Open
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
db36fa6 to
9f5ea74
Compare
Add pybind11::mod_gil_not_used() to the min_cost_flow, max_flow and linear_sum_assignment modules so that importing them on a free-threaded CPython build (3.13t/3.14t) no longer re-enables the GIL.
9f5ea74 to
a53a3ef
Compare
Author
|
CI note: the two failing checks are unrelated to this change and also fail on
All jobs exercising this change pass, including the graph Python sample tests. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
pybind11::mod_gil_not_used()to the threeortools.graph.pythonmodules (min_cost_flow,max_flow,linear_sum_assignment).OR-Tools has shipped free-threaded (cp313t/cp314t) Linux wheels since 9.12, but because no extension module declares
Py_mod_gil_not_used, importing e.g.ortools.graph.python.min_cost_flowon a free-threaded interpreter emits aRuntimeWarningand re-enables the GIL process-wide, which defeats the purpose of the free-threaded build.These three modules are stateless pybind11 bindings around
SimpleMinCostFlow/SimpleMaxFlow/SimpleLinearSumAssignment, which hold all state per instance with no global/static mutable state.Motivation: k-means-constrained uses
SimpleMinCostFlowand is adding free-threaded (3.14t) wheels for true multi-threaded solving; this declaration is what currently blocks the GIL staying disabled.